import request from '@/utils/request'
import { getCurrentUserId } from '@/utils/auth'

// 获取好友列表
export function getFriendList() {
  // 使用统一的用户ID获取方法
  const userId = getCurrentUserId(true)
  
  if (!userId) {
    return Promise.reject(new Error('用户未登录'))
  }
  
  return request({
    url: `/friends?user_id=${userId}`,
    method: 'GET'
  }).catch(error => {
    console.error('获取好友列表失败:', error)
    throw new Error('获取好友列表失败，请稍后重试')
  })
}

// 搜索用户
export function searchUser(username) {
  return request({
    url: `/users/search?keyword=${username}`,
    method: 'GET'
  }).catch(error => {
    console.error('搜索用户失败:', error)
    throw new Error('搜索用户失败，请稍后重试')
  })
}

// 添加好友
export function addFriend(data) {
  return request({
    url: '/friends/add',
    method: 'POST',
    data
  }).catch(error => {
    console.error('添加好友失败:', error)
    throw new Error('添加好友失败，请稍后重试')
  })
}

// 删除好友
export function deleteFriend(friendId) {
  return request({
    url: `/friends?friend_id=${friendId}`,
    method: 'DELETE'
  }).catch(error => {
    console.error('删除好友失败:', error)
    throw new Error('删除好友失败，请稍后重试')
  })
}

// 获取或创建聊天房间
export function getOrCreateChatRoom(userId) {
  return request({
    url: `/rooms/chat?user_id=${userId}`,
    method: 'POST'
  }).catch(error => {
    console.error('获取或创建聊天房间失败:', error)
    throw new Error('获取或创建聊天房间失败，请稍后重试')
  })
}

// 发送好友申请
export function sendFriendRequest(data) {
  return request({
    url: '/friends/request',
    method: 'POST',
    data
  }).catch(error => {
    console.error('发送好友申请失败:', error)
    throw new Error('发送好友申请失败，请稍后重试')
  })
}

// 获取好友申请列表
export function getFriendRequests() {
  const userId = getCurrentUserId(true)
  
  if (!userId) {
    return Promise.reject(new Error('用户未登录'))
  }
  
  return request({
    url: `/friends/requests?user_id=${userId}`,
    method: 'GET'
  }).catch(error => {
    console.error('获取好友申请失败:', error)
    throw new Error('获取好友申请失败，请稍后重试')
  })
}

// 处理好友申请
export function respondToFriendRequest(requestId, action) {
  const userId = getCurrentUserId(true)
  
  if (!userId) {
    return Promise.reject(new Error('用户未登录'))
  }
  
  return request({
    url: `/friends/request/${requestId}/respond`,
    method: 'POST',
    data: {
      user_id: userId,
      action: action // 'accepted' 或 'rejected'
    }
  }).catch(error => {
    console.error('处理好友申请失败:', error)
    throw new Error('处理好友申请失败，请稍后重试')
  })
}